理解GPTQ之前,先了解作者的另一篇文章是有必要的,那就是OBC。
Optimal Brain Compression(arXiv preprint arXiv:2208.11580)
OBS & Layer-Wise Pruning式(2)是问题的目标函数,W是原参数,X是输入,W^hat 是修剪后的参数。白话讲就是,如何找到一组新的参数(稀疏),使得与原参数相比,在与X相乘后得到的L2 error 最小。式(3)给出了求解过程,这是个迭代求解的方法,本质上是先修剪某个使得(2)式误差增加最少的参数,并且修复更新其余未修剪的参数。那么为什么要OBS for Layer-Wise Prunning? 原因是H是误差函数的hessian矩阵,如果参数W的数量是10,那么H就是[100,100]的矩阵,放到大规模网络这里来,非常“爆炸”。所以需要逐层OBS,如上文所述,迭代 OBS 框架一次删除一个权重将为分层修剪问题产生精确的贪婪解决方案,因为它在每一步都采取(局部)最优决策。 虽然这种贪心方法不能保证收敛到全局最优,但这种方法对于处理太大而无法通过精确方法处理的问题实例非常有效。然而,逐层做OBS也有问题,参数数量往往都是10^6或者